package com.jerry.aop;

//import org.aspectj.lang.JoinPoint;
//import org.aspectj.lang.ProceedingJoinPoint;
//import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Service;

import java.util.Arrays;

/**
 * Created by Shirly on 2016/12/6.
 */
//@Aspect
@Service
public class AopAspect {

////    @Pointcut("execution(* com.jerry.aop.*.*(..))")
//    public void myPointCut() {
//
//    }
//
////    @Around("execution(* com.jerry.aop.*.*(..))")
//    public Object around(ProceedingJoinPoint jp) throws Throwable {
//        System.out.println("around执行之前。。。。。。。");
//        Object[] args = jp.getArgs();
//        if(args!=null &&args.length>0){
//            args[0] = "增加一个参数"+args[0];
//        }
//        Object rvt = jp.proceed(args);
//        System.out.println("around执行之后。。。。。。。");
//        if(rvt !=null && rvt instanceof Integer){
//            rvt =(Integer)rvt * (Integer)rvt;
//        }
//        return rvt;
//    }
//
//    @Before("execution(* com.jerry.aop.*.*(..))")
//    public void before(JoinPoint jp){
//        System.out.println("before执行之前。。。。。。");
//        Object[] args = jp.getArgs();
//        String methodName = jp.getSignature().getName();
//        Object  o = jp.getTarget();
//        System.out.println("before切点织入的方法参数是:"+ Arrays.toString(args));
//        System.out.println("before切点织入的方法名是："+methodName);
//        System.out.println("before切点织入的方法对象是："+o);
//    }
//
//    @After("execution(* com.jerry.aop.*.*(..))")
//    public void after(JoinPoint jp){
//        System.out.println("after执行之前。。。。。。");
//        Object[] args = jp.getArgs();
//        String methodName = jp.getSignature().getName();
//        Object  o = jp.getTarget();
//        System.out.println("after切点织入的方法参数是:"+ Arrays.toString(args));
//        System.out.println("after切点织入的方法名是："+methodName);
//        System.out.println("after切点织入的方法对象是："+o);
//    }
//
//    @AfterReturning(pointcut = "myPointCut()")
//    public void afterReturning(JoinPoint jp){
//        System.out.println("afterReturning执行之前。。。。。。");
//        Object[] args = jp.getArgs();
//        String methodName = jp.getSignature().getName();
//        Object  o = jp.getTarget();
//        System.out.println("afterReturning切点织入的方法参数是:"+ Arrays.toString(args));
//        System.out.println("afterReturning切点织入的方法名是："+methodName);
//        System.out.println("afterReturning切点织入的方法对象是："+o);
//    }
}
